[总结]Elasticsearch的使用

Elasticsearch使用总结

1.安装部署
安装jdk1.7

官网下载并安装es1.7(公司版本)

安装Marvel插件(付费的监控插件)
./bin/plugin -i elasticsearch/marvel/latest
如果不用marvel监控可以这样操作
echo ‘marvel.agent.enabled: false’ >> ./config/elasticsearch.yml
运行es(-d可以demon模式运行)
./bin/elasticsearch -d
如果关闭需要kill
节点就是es运行的实例,所谓集群就是一组同样cluster.name的节点。他们协同工作,互相分享数据,提供了故障转移和扩展的功能。当然一个节点也可以是一个集群。

2.与es通信
1.java api(9300端口)
分为节点客户端(客户端为集群的一部分,只是不存数据,会参与通信)与传输客户端(更加轻量,不参与集群,缺点是可能会产生双跳(double hop),即当前遍历到node1,但访问的数据在node2,请求先发到node1,又由node1转发到node2。)
注意客户端版本需要和集群节点的版本号一样,不然可能会无法识别。
2.通过http向restful api传送json(9200端口)


存储与搜索
ES是Elastic Search的缩写,ES是基于Lucene的分布式存储;Lucene提供了全文检索的功能,ES在此之上加入索引分布式的机制,提供了数据分片、数据副本、数据同步等功能,保证了数据的安全性;

ES存储的基本单位是一个Document,可以想象是数据库中的一行,与数据库类似的是,一个Document包含有多个Field,可以是数值类型也可以是字符类型,与数据库不同的是,Document可以随意添加或删除字段,也就是Schema less,另外ES对于需要检索的字段可以声明为需要索引,这样可以很方便就对Document进行检索。

ES具有以下特性:

1.分布式的实时文件存储,每个字段都被索引并可被搜索;

2.分布式的实时分析搜索引擎;

3.可以扩展到上百台服务器,处理PB级结构化或非结构化数据;

ES在分布式概念上做了很大程度上的透明化,你不需要知道任何关于分布式系统、分片、集群发现或者其他大量的分布式概念。ES致力于隐藏分布式系统的复杂性,以下这些操作都是在底层自动完成的:

1.将你的文档分区到不同的容器或者分片(shards)中,它们可以存在于一个或多个节点中。

2.将分片均匀的分配到各个节点,对索引和搜索做负载均衡。

3.冗余每一个分片,防止硬件故障造成的数据丢失。

4.将集群中任意一个节点上的请求路由到相应数据所在的节点。

5.无论是增加节点,还是移除节点,分片都可以做到无缝的扩展和迁移。